#include "stack_named.h"

int stack_named_init(struct stack_named *p_stack, int *p_buf, int s32Size, const char *p_name)
{
    stack_init(&p_stack->super, p_buf, s32Size); /*先初始化父类的成员*/
    p_stack->p_name = p_name; /*再初始化子类的成员*/
}

int stack_named_set(struct stack_named *p_stack, const char * p_name)
{
    p_stack->p_name = p_name;
    return 0;
}

/*
 * C 语言定义的函数都是全局的，不想C++ 有类作用域的限制,而且使用C++的信念去写C ，认为头文件的函数一定和源文件的函数一一对值，结果不是，差一点又自我怀疑了
 * **/
const char * stack_named_get(struct stack_named * p_stack)
{
    return p_stack->p_name;
}

/**
 * 在子类的去初始化函数中，首先对子类的资源进行去初始化，然后再调用父类的去初始化
 *
 * 和C++类似，在销毁一个子类对象时，首先调用子类的析构函数，再调用父类的析构函数
 * */
int stack_named_deinit(struct stack_named * p_stack)
{
    p_stack->p_name = 0; /* NULL */
    return stack_deinit(&p_stack->super);
}
